import axios from "axios"
//引入nprogress
import NProgress from "nprogress"
import "nprogress/nprogress.css"

//创建axios实例,基础配置
const request = axios.create({
    //配置代理服务器名称,以便复用request
    baseURL: "/api1",
    timeout: 10000
})

//添加拦截器
request.interceptors.request.use(function(config){
    

    // 添加请求进度条
    NProgress.start();

    //获取token,客户端在本地存储了user_token属性,属性值为token
    const token = localStorage.getItem("user_token")
    //随着http请求发送token
    config.headers.token = token

    return config
},function(error){
    NProgress.done()
    //????
    return Promise.reject(error)
})

//相应拦截器,一旦发送请求,就需要进行权限校验
request.interceptors.response.use(function(response){
    NProgress.done()
    //必须校验成功,否则无法操作视图并使其跳转到登录视图进行权限校验
    if(response.data.code === 20000){
        return Promise.reject({
            message: response.data.msg,
            isLogin: false
        });
    }

    //后端响应数据是否正常
    if(response.data.code !== 10000){
        return Promise.reject({
            //catch通过e.message捕捉错误
            message: response.data.msg,
            isLogin: true
        })
    }

    return response.data.data
},function(error){
    NProgress.done()
    return Promise.reject(error)
})

//暴露即可在其他文件夹引入
export default request